package com.nengchuan.kbms.dfs.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nengchuan.kbms.common.IPageService;
import com.nengchuan.kbms.dfs.entity.dto.UserFilePageDTO;
import com.nengchuan.kbms.dfs.entity.dto.UserFileUploadDTO;
import com.nengchuan.kbms.dfs.entity.po.UserFile;
import com.nengchuan.kbms.dfs.entity.vo.UserFileVO;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;

/**
 * <p>
 * 用户文件（个人空间上传的文件） 服务类
 * </p>
 *
 * @author abe
 * @since 2020-04-02
 */
public interface UserFileService extends IPageService<UserFile> {

    /**
     * 上传文件
     * @param dto 个人文件上传传输对象
     * @param inputStream 输入流
     * @return
     */
    UserFileVO uploadFile(UserFileUploadDTO dto, InputStream inputStream);

    /**
     * 下载文件
     * @param id 个人文件id
     * @param outputStream 输出流
     */
    void downloadFile(Long id, OutputStream outputStream);

    /**
     * 个人空间文件列表
     */
    IPage<UserFileVO> folderAndFilePage(UserFilePageDTO pageDTO);

    /**
     * 删除个人空间文件、文件夹、收藏的文件
     */
    boolean removeFiles(Serializable id);
}
